/**
 * Copyright (C) 2018-2020
 * All rights reserved, Designed By www.yixiang.co

 */
package co.yixiang.modules.user.domain;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import co.yixiang.domain.BaseDomain;
import co.yixiang.modules.user.service.dto.WechatUserDto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;

/**
* @author hupeng
* @date 2020-05-12
*/

@Builder
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString
@TableName(value = "yx_user",autoResultMap = true)
public class YxUser extends BaseDomain {

    /** 用户id */
    @TableId(value = "uid", type = IdType.AUTO)
    private Long uid;


    /** 用户账户(跟accout一样) */
    private String username;




    /** 用户密码（跟pwd） */
    private String password;



    /** 真实姓名 */
    private String realName;


    /** 生日 */
    private Integer birthday;


    /** 身份证号码 */
    private String cardId;


    /** 用户备注 */
    private String mark;


    /** 合伙人id */
    private Integer partnerId;


    /** 用户分组id */
    private Integer groupId;


    /** 用户昵称 */
    private String nickname;


    /** 用户头像 */
    private String avatar;


    /** 手机号码 */
    private String phone;



    /** 添加ip */
    private String addIp;



    /** 最后一次登录ip */
    private String lastIp;


    /** 用户余额 */
    private BigDecimal nowMoney;


    /** 佣金金额 */
    private BigDecimal brokeragePrice;


    /** 用户剩余积分 */
    private BigDecimal integral;


    /** 连续签到天数 */
    private Integer signNum;


    /** 1为正常，0为禁止 */
    private Integer status;


    /** 等级 */
    private Integer level;


    /** 推广元id */
    private Long spreadUid;


    /** 推广员关联时间 */
    private Date spreadTime;


    /** 用户类型 */
    private String userType;


    /** 是否为推广员 */
    private Integer isPromoter;


    /** 用户购买次数 */
    private Integer payCount;


    /** 下级人数 */
    private Integer spreadCount;



    /** 详细地址 */
    private String addres;


    /** 管理员编号  */
    private Integer adminid;


    /** 用户登陆类型，h5,wechat,routine */
    private String loginType;

    /** 微信用户json信息 */
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private WechatUserDto wxProfile;

    /** 普通会员数量 */
    private Integer normalCount;

    /** 订单数量 */
    private Integer vipCount;

    /** 所有上级id */
    private String path;

    /** 是否399会员*/
    private String whether_slim;

    /** 到期时间 */
    private Date validity_date;

    /** 复购金额 */
    private BigDecimal balanceSum;

    /** 微信公众号openid*/
    private String wxOpenId;

    /** 小程序openId*/
    private String uniOpenId;

    /** 微信名称*/
    private String wechatAccount;

    /** 运营中心区域id */
    private Long areaId;

    /** 运营中心区域*/
    private String areaName;

    /** 是否开启运营中心*/
    private String isOpen;

    /** 区域类型*/
    private String areaType;

    /** 是否自购推一返三活动产品*/
    private String isPinkSelf;

    /** 累计直属购买推一返三活动产品总单数 */
    private Integer pinkCount;

    /** 期初订单数 */
    private Integer baseCount;

    /** 是否vip会员*/
    private String whetherVipSlim;

    /** 成为vip时间 */
    private Date vipDate;

    /** 银行卡号*/
    private String bankCode;

    /** 银行卡开户行名称*/
    private String bankName;

    /** 银行卡开户人名称*/
    private String bankUserName;

    /** 是否开启成为联创会员的条件*/
    private String isOpenLian;

    /** 是否开启成为皇冠会员的条件*/
    private String isOpenCrown;

    /** 是否无上级*/
    private String isNoSpread;

    /** 是否购买直通车*/
    private String isThrough;

    /** 赠送vip数量 */
    private Integer vipHroughTrain;

    /** 赠送黄金数量 */
    private Integer goldHroughTrain;

    /** 赠送钻石数量 */
    private Integer diamondsHroughTrain;

    /** 赠送人id */
    private Long throughUid;

    /** 授权时间 */
    private Date authDate;


    /** 授权记录 */
    private String authRemark;

    /** 已授权的用户数量 */
    private Integer authThroughCount;

    /** 是否联创*/
    private String whetherCrown;

    /** 是否有授权书*/
    private String whetherAuthorize;

    /** 授权开始时间 */
    private Date authBeginDate;

    /** 授权结束时间 */
    private Date authEndDate;

    /** 抽奖次数 */
    private Integer prizeCount;

    /** 讲师考试*/
    private String isCodePass;

    /** 晋升考试*/
    private String isPromotionPass;

    /** 新版升级的标识*/
    private String isNew;

    /** 是否授权 */
    private Integer isAuth;


    public void copy(YxUser source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
